﻿#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2022 北京超维景生物科技有限公司 保留所有权利。
 * CLR版本：4.0.30319.42000
 * 文件名：Kernel
 * 
 * 创建者：huangyang
 * 电子邮箱：huangyang@tvscope.cn
 * 创建时间：2023/2/9 18:01:25
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ImageK.Gui
{
    public class ScrollbarWithLabel:Panel
    {
        public EventHandler ValueChanged { get; set; }
        public TrackBar bar;
        private Icon icon;
        private StackWindow stackWindow;
        // transient AdjustmentListener adjustmentListener;

        public ScrollbarWithLabel()
        {
        }

        public ScrollbarWithLabel(StackWindow stackWindow, int value, int visible, int minimum, int maximum, char label)
        {
            Width = stackWindow.Width - 25;
            Height = 25;
            Visible = true;
            // super(new BorderLayout(2, 0));
            this.stackWindow = stackWindow;
            // bar = new Scrollbar(Scrollbar.HORIZONTAL, value, visible, minimum, maximum);
            bar = new TrackBar();
            bar.Orientation = Orientation.Horizontal;
            bar.Value = value;
            bar.Visible = visible >0;
            bar.Minimum = minimum;
            bar.Maximum = maximum;
            bar.Width = stackWindow.Width - 25;
            bar.TickStyle = TickStyle.None;
            // GUI.fixScrollbar(bar);
            // icon = new Icon(label);
            // add(icon, BorderLayout.WEST);
            this.Controls.Add(bar);
            bar.ValueChanged += BarOnValueChanged;
            // bar.addAdjustmentListener(this);
            // addKeyListener(IJ.getInstance());
        }

        private void BarOnValueChanged(object? sender, EventArgs e)
        {
            ValueChanged?.Invoke(sender, e);
        }

        public int getValue()
        {
            return bar.Value;
        }

        public void setValue(int v)
        {
            bar.Value = v;
        }

        public int getMaximum()
        {
            return bar.Maximum;
        }

        public void setMaximum(int max)
        {
            bar.Maximum = max;
        }

        public void setUnitIncrement(int u)
        {
            // bar.setUnitIncrement(u);
        }
    }
}
